remark-break๋กœ ์ค„๋ฐ”๊ฟˆ

8/19/2025

๋ฌธ์ œ์ƒํ™ฉ

reamark ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด mdํŒŒ์ผ์„ htmlํ˜•์‹์œผ๋กœ ์ „ํ™˜ํ•ด์„œ ๋ธ”๋กœ๊ทธ ๊ธ€์„ ๋ณด์—ฌ์ค€๋‹ค.
๊ทผ๋ฐ md ํŒŒ์ผ๋กœ๋Š” ๋‹ค์Œ์ฒ˜๋Ÿผ ์ค„๋ฐ”๊ฟˆ์ด ๋“ค์–ด๊ฐ€์žˆ๋Š”๋ฐ html๋กœ๋Š” <p>ํƒœ๊ทธ ํ•˜๋‚˜์— ํ†ต์งธ๋กœ ์ค„๋ฐ”๊ฟˆ ์—†์ด ๋“ค์–ด๊ฐ€์„œ ๋ณด๊ธฐ์— ๋ถˆํŽธํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.

# ์›์ธ
`write/page.tsx`๋ฅผ ํ”„๋ฆฌ๋ Œ๋”๋ง ํ•  ์ˆ˜ ์—†์–ด์„œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ.
ํŽ˜์ด์ง€๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋‘˜ ๋•Œ ๊ฑฐ๊ธฐ์„œ ๋ถˆ๋Ÿฌ์˜จ quill ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ `document`๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” DOM API๋ฅผ ํ•„์š”๋กœ ํ•œ๋‹ค. (๊ฐ€๋ น quill ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์•ˆ์—์„œ `document.getElementById` ์™€ ๊ฐ™์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค)
์ฆ‰ quill์„ ์‹ค์งˆ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” `editor.tsx`์—์„œ ํ€ผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š”๊ฒƒ.
`write/page.tsx`์—์„œ๋„ quill๋ฅผ ๋ถˆ๋Ÿฌ์˜ค์ง€๋งŒ ์—ฌ๊ธฐ์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€๋Š” ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค.
<code>write/page.tsx</code>๋ฅผ ํ”„๋ฆฌ๋ Œ๋”๋ง ํ•  ์ˆ˜ ์—†์–ด์„œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ.
ํŽ˜์ด์ง€๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋‘˜ ๋•Œ ๊ฑฐ๊ธฐ์„œ ๋ถˆ๋Ÿฌ์˜จ quill ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ <code>document</code>๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” DOM API๋ฅผ ํ•„์š”๋กœ ํ•œ๋‹ค. (๊ฐ€๋ น quill ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์•ˆ์—์„œ <code>document.getElementById</code> ์™€ ๊ฐ™์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค)
์ฆ‰ quill์„ ์‹ค์งˆ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” <code>editor.tsx</code>์—์„œ ํ€ผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š”๊ฒƒ.
<code>write/page.tsx</code>์—์„œ๋„ quill๋ฅผ ๋ถˆ๋Ÿฌ์˜ค์ง€๋งŒ ์—ฌ๊ธฐ์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€๋Š” ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค.

์›์ธ

html์—์„œ ํƒœ๊ทธ ์•ˆ์˜ ๋ฌธ์ž์—ด๋“ค์ด ์žˆ์„๋•Œ <br />์ด ์—†๋Š” ๊ทธ๋ƒฅ '์—”ํ„ฐ'(\n) ๋ฅผ ํ†ตํ•œ ์ค„๋ฐ”๊ฟˆ์€ ๋„์–ด์“ฐ๊ธฐ ํ•œ์นธ์œผ๋กœ ์ธ์‹ํ•˜๊ธฐ ๋•Œ๋ฌธ์ธ๊ฑฐ ๊ฐ™๋‹ค.

ํ•ด๊ฒฐ

์ฐพ์•„๋ณด๋‹ˆ๊นŒ remark-breaks๋ผ๋Š” ์ •ํ™•ํ•˜๊ฒŒ ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

import breaks from "remark-breaks";

  const processedContent = await remark()
    .use(html)
    .use(breaks)
    .process(matterResult.content);

๊ธฐ์กด์˜ .use(html).process(matterResult.content)์‚ฌ์ด์— .user(breaks)๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ๊ฐ„๋‹จํžˆ ํ•ด๊ฒฐํ–ˆ๋‹ค.